Technical Q&A QA1261
Is ColorSync thread safe?


Q: Mac OS X 上で、マルチスレッドから ColorSync を呼び出せますか。それとも最終的には、現在使用しているカラーマネジメントモジュール (CMM) に依存するのでしょうか。たとえば、いくつかの画像に対してカラーマッチングを行う場合、それぞれの画像の色を異なるスレッドでマッチングさせることはできますか?各マッチングに使用するカラーワールドは同じ(入力、パススルー、出力のプロファイルが同じ)ですが、カラーマッチングする画像はそれぞれ固有のものです。

A: ColorSync がスレッドセーフかどうかは、使用している CMM によります。

アップルの CMM を使用している場合は、CWMatchPixMapCWMatchBitmap などのような、カラーワールド参照 (CMWorldRef) またはプロファイル参照 (CMProfileRef) にアクセスする ColorSync 関数を、マルチスレッドから使用しても問題ありません。しかし、マルチスレッドから CMProfileRef を修正する場合には、正常な動作は保証されません。

また、ColorSync のマッチングを高速化することが目標である場合は、アップルの CMM を使用していると、マルチスレッドを開始して複数の画像を処理するのは実際には意味がありません。Mac OS 9 と Mac OS X のプラットフォームでは、アップルの CMM はすでに、この処理を内部的に複数のスレッド(プロセッサごとに 1 つ)に分けているためです。


[2003 年 4 月 17 日]